package com.abbas.smartCity.util;

import androidx.activity.ComponentActivity;

import java.util.Stack;

/**
 * 本类无需实现
 *
 * 窗口管理器
 *
 */
@NoImpl
public class ActivityManager {

    private static ActivityManager instance;//单例模式
    private final Stack<ComponentActivity> activities = new Stack<>();//所有活动容器

    /**
     * 禁止new出对象。最好的方法应该是公开此构造，并在构造当中抛出异常。私有化空构造是不合理的。
     */
    private ActivityManager() {
    }

    //懒汉式单例
    public static ActivityManager getInstance() {
        if (instance == null){
            synchronized (ActivityManager.class){
                if (instance == null){
                    instance = new ActivityManager();
                }
            }
        }
        return instance;
    }

    /**
     * 入栈、压栈
     * @param activity 活动
     */
    public void push(ComponentActivity activity){
        activities.push(activity);
    }

    /**
     * 出栈
     */
    public void pop(){
        activities.pop();
    }

    /**
     * 非stack方法
     * 移除某个栈/根据对象
     * @param activity 活动
     */
    public void remove(ComponentActivity activity){
        activities.remove(activity);
    }

    /**
     * 获取当前栈最上层的活动
     * @return 当前栈最上层的活动
     */
    public ComponentActivity get(){
        return activities.firstElement();
    }




}
